#pragma once
#include "Expression.hpp"
#include "Syntax/Token.hpp"
#include <vector>

class AssignmentExpressionSyntax : public ExpressionSyntax {
public:
  AssignmentExpressionSyntax(SharedToken identifierToken,
                             SharedToken equalsToken,
                             SharedExpression expression)
      : ExpressionSyntax(SyntaxKind::AssignmentExpression,
                         "AssignmentExpression"),
        IdentifierToken(identifierToken), EqualsToken(equalsToken),
        Expression(expression) {}

public:
  virtual std::vector<SharedNode> GetChildren() override {
    return {this->IdentifierToken, this->EqualsToken, this->Expression};
  }

public:
  SharedToken EqualsToken;
  SharedToken IdentifierToken;
  SharedExpression Expression;
};